///*
//struct ListNode {
//	int val;
//	struct ListNode *next;
//	ListNode(int x) :
//			val(x), next(NULL) {
//	}
//};*/
//class Solution {
//public:
//	ListNode* FindFirstCommonNode(ListNode* pHead1, ListNode* pHead2)
//	{
//		int len1 = 0, len2 = 0;
//		ListNode* cur1 = pHead1, * cur2 = pHead2;
//
//		while (cur1)
//		{
//			len1++;
//			cur1 = cur1->next;
//		}
//
//		while (cur2)
//		{
//			len2++;
//			cur2 = cur2->next;
//		}
//
//		ListNode* longlist = pHead1;
//		ListNode* shorlist = pHead2;
//		if (len1 < len2)
//		{
//			shorlist = pHead1;
//			longlist = pHead2;
//		}
//
//		int tep = abs(len1 - len2);
//		while (tep--)
//		{
//			longlist = longlist->next;
//		}
//
//		while (longlist != shorlist)
//		{
//			longlist = longlist->next;
//			shorlist = shorlist->next;
//		}
//
//		return longlist;
//	}
//};
